/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package ManagedBeans;

import Geral.ErroInternoException;
import Geral.Fachada;
import Treino.Treino;
import Treino.TreinoExistenteException;
import Treino.TreinoInexistenteException;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.persistence.EntityManager;

/**
 *
 * @author Ivaldo
 */
@ManagedBean
@SessionScoped
public class ManagedBeanTreino {

    @EJB
    private Fachada fachada;
    private Treino treino;
    private EntityManager em;

    public ManagedBeanTreino() {
        this.treino = new Treino();
    }

    public ManagedBeanTreino(Treino treino) {
        this.treino = treino;
    }

    public Treino getTreino() {
        return treino;
    }

    public void setTreino(Treino treino) {
        this.treino = treino;
    }

    public String adicionarTreino() {
        try {
            this.fachada.adicionarTreino(treino);
            FacesContext contexto = FacesContext.getCurrentInstance();
            FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, null, "Cadastro realizado com sucesso");
            contexto.addMessage(null, msg);
            this.treino = new Treino();
        } catch (ErroInternoException e) {
            FacesContext contexto = FacesContext.getCurrentInstance();
            FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Erro Interno", "Ocorreu um erro interno inesperado" + e.getMessage());
            contexto.addMessage(null, msg);
        } catch (TreinoExistenteException e) {
            FacesContext contexto = FacesContext.getCurrentInstance();
            FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro", "Este Treino já foi cadastrado! " + e.getMessage());
            contexto.addMessage(null, msg);
        }
        return null;
    }

    public String removerTreino() {
        try {
            this.fachada.removerTreino(treino.getId());
            return "lista-html.xhtml";
        } catch (ErroInternoException e) {
            return "Errointerno.xhtml";
        } catch (TreinoInexistenteException e) {
            return "TreinoInexistente.xhtml";
        }
    }

    public String buscarTreino() {
        try {
            this.fachada.buscarTreino(treino.getId());
            return "InformacoesTreino.xhtml";
        } catch (ErroInternoException e) {
            return "ErroInterno.xhtml";
        } catch (TreinoInexistenteException e) {
            return "TreinoInexistente.xhtml";
        }
    }

    public String atualizarTreino() {
        try {
            this.fachada.atualizarTreino(treino);
            FacesContext contexto = FacesContext.getCurrentInstance();
            FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, null, "Atualização concluida");
            contexto.addMessage(null, msg);
        } catch (ErroInternoException e) {
            FacesContext contexto = FacesContext.getCurrentInstance();
            FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro Interno", "Ocorreu um erro inesperado");
            contexto.addMessage(null, msg);
            return null;
        } catch (TreinoInexistenteException e) {

        }
        return null;
    }
    
    public List<Treino> listaTreinos() throws ErroInternoException{
        try{
            List<Treino> listaTreinos = this.fachada.listaTreino(treino);
            return listaTreinos;
        }catch(ErroInternoException e){
            throw new ErroInternoException(e);
        }
    }
}
